#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//void Select(int* a, int n)
//{
//	for (int i = 0; i < n; i++)
//	{
//		int min = a[i];
//		int ret = i;
//		for (int j = i + 1; j < n; j++)
//		{
//			if (min > a[j])
//			{
//				min = a[j];
//				ret = j;
//			}
//		}
//		int tmp = a[i];
//		a[i] = a[ret];
//		a[ret] = tmp;
//	}
//}
void swap(int* pa, int* pb)
{
	int tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}
void Select(int* a,int n)
{
	int begin = 0;
	int end = n - 1;
	while (begin < end)
	{
		int mini = begin;
		int maxi = end;
		for (int i = begin; i <= end; i++)
		{
			if (a[i] < a[mini])
			{
				mini = i;
			}
			if (a[i] > a[maxi])
			{
				maxi = i;
			}
		}
		swap(&a[begin], &a[mini]);
		if (begin == maxi)
		{
			maxi = mini;
		}
		swap(&a[end], &a[maxi]);
		begin++;
		end--;
	}
}

//void AdjustDown(int* a, int n, int parent)
//{
//	int child = 2 * parent + 1;
//	while (child < n)
//	{
//		if (child + 1 < n && a[child] < a[child + 1])
//		{
//			child++;
//		}
//		if (a[parent] < a[child])
//		{
//			swap(&a[parent], &a[child]);
//			parent = child;
//			child = parent * 2 + 1;
//		}
//		else
//		{
//			break;
//		}
//	}
//}
//void HeapSort(int* a, int n)
//{
//	for (int i = (n - 1 - 1) / 2; i >= 0; i--)
//	{
//		AdjustDown(a, n, i);
//	}
//
//	while (n)
//	{
//		swap(&a[0], &a[n-1]);
//		AdjustDown(a, n-1, 0);
//		n--;
//	}
//}
int main()
{
	int arr[] = { 9,4,6,2,8,1,9,3,-1,7,0 };
	int n = sizeof(arr) / sizeof(int);
	Select(arr, n);
	//HeapSort(arr, n);
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}